package constant

import "time"

// IDriver 驱动
type IDriver interface {
	Login(args ...string) (string, error) // 登录
	Logout() error                        // 登出
	Groups() (map[string][]Stock, error)  // 股票分组
	IApi
}

type IApi interface {
	Tick(codes []Stock) (map[string]Kline, error)                 // 每笔成交
	Realtime(codes []Stock) (map[string]Kline, error)             // 实时行情
	Minute(minute int, codes []Stock) (map[string][]Kline, error) // 分时
}

// Stock 股票
type Stock struct {
	Code      string       `json:"code"`       // 股票代码 A股（6位数字），B股（9位数字），港股（5位数字）
	Exchange  ExchangeType `json:"exchange"`   // 交易所 SH，SZ，HK
	Name      string       `json:"name"`       // 股票名称
	ShortName string       `json:"short_name"` // 股票简称
	Type      StockType    `json:"type"`       // 股票类型

	Precision int `json:"precision"` // 精度
}

type Kline struct {
	Stock
	Date         time.Time          `json:"date"`          // 日期
	Volume       float64            `json:"volume"`        // 成交量
	Open         float64            `json:"open"`          // 开盘价
	High         float64            `json:"high"`          // 最高价
	Low          float64            `json:"low"`           // 最低价
	Close        float64            `json:"close"`         // 收盘价
	Chg          float64            `json:"chg"`           // 涨跌额
	Percent      float64            `json:"percent"`       // 涨跌幅
	TurnoverRate float64            `json:"turnover_rate"` // 换手率
	Amount       float64            `json:"amount"`        // 成交额
	LastClose    float64            `json:"last_close"`    // 昨收价
	Indicators   map[string]float64 `json:"indicators"`    // 其他指标
}
